boost::function 和 boost::bind
boost::function是对函数指针的对象化封装,是一个函数对象的容器,在概念上与回调函数类似,先看一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <boost/function.hpp> #include <boost/bind.hpp> #include <iostream> class TestA { public: void method() { std::cout << "TestA: method: no arguments" << std::endl; } void method(int a, int b) { std::cout << "TestA: method: with arguments" << "value of a is:" << a << "value of b is:" << b << std::endl; } }; void sum(int a, int b) { int sum = a + b; std::cout << "sum: " << sum << std::endl; } int main() { boost::function<void()> f; TestA test; f = boost::bind(&TestA::method, &test); f(); f = boost::bind(&TestA::method, &test, 1, 2); f(); }
|
boost::function通常结合boost::bind一起使用,这是因为bind返回的正好是一个函数对象。